import { loginApi } from '@/api/user'

export default {
  // 开启命名空间，避免命名冲突
  namespaced: true,
  // 1. 定义变量 => 定义成函数形式返回，避免引用
  state: () => {
    return {
      // 存储登录人信息
      profile: {
        id: '',
        avatar: '',
        nickname: '',
        account: '',
        mobile: '',
        token: ''
      }
    }
  },
  // 2. 定义修改变量方法（同步）
  mutations: {
    /**
     * 存储登录人信息
     * @param {*} state
     * @param {*} profile 后台获取的登录人信息
     */
    setProfile (state, profile) {
      state.profile = profile
    }
  },
  // 3. 定义异步后台请求（异步）
  actions: {
    /**
     * 登录action
     * @param {*} param0
     * @param {*} formData:{account, password}
     */
    async getProfileAction ({ commit }, formData) {
      const { result } = await loginApi(formData)
      console.log('登录人信息：', result)
      commit('setProfile', result)
    },
    /**
     * 退出登录
     * @param {*} param0
     */
    logoutAction ({ commit }) {
      commit('setProfile', {})
      // 清除本地购物车数据
      // 说明❓：设置{ root: true }，可以跨模块调用mutations方法
      commit('cart/setList', [], { root: true })
    }
  }
}
